package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.lib.AdsException;
import br.com.telescope.t2.ModuleNavigator;
import br.com.telescope.t2.ServiceNavigation;
import br.com.telescope.t2.exception.ApplicationRuntimeException;
import solutions.ferpa.ztest.ent.EntInstrumentoEnsaio;

public class ModInstbase extends ModuleNavigator {
    
    public ModInstbase() {
        
        setGlobalName("ZTEST.MOD_INSTBASE");
        setInitialService(CadInstrumentoEnsaio.class, "LIST");
        
        addNavigation((new ServiceNavigation())
                .id("20494708")
                .name("MASTER")
                .label("Bancada para ensaio")
                .destination(CadInstrumentoEnsaio.class)
                .feature("VIEW")
                .parameterName("A_ID")
                );
        addNavigation((new ServiceNavigation())
                .id("20494720")
                .name("COMP_INSTR")
                .label("Componentes (dispositivos) para ensaios")
                .destination(CadInstrumentoUtilizado.class)
                .feature("LIST")
                .parameterName("P_ID_INSTRUMENTO_BASE")
                );
        addNavigation((new ServiceNavigation())
                .id("20494727")
                .name("BANC_MODLH")
                .label("Modelos de hidrômetros (ensaios)")
                .destination(CadModeloEnsaioInstrumento.class)
                .feature("LIST")
                .parameterName("P_ID_INSTRUMENTO_ENSAIO")
                );
        addNavigation((new ServiceNavigation())
                .id("20627423")
                .name("OPER_INSTR")
                .label("Operadores do instrumento")
                .destination(CadOperadorInstrumento.class)
                .feature("LIST")
                .parameterName("P_ID_INSTRUMENTO_ENSAIO")
                );
        addNavigation((new ServiceNavigation())
                .id("21854637")
                .name("MOD_CERTIF_CALIBR")
                .label("Certificados de calibração")
                .destination(CadCertificadoCalibracao.class)
                .feature("LIST")
                .parameterName("P_ID_INSTRUMENTO_ENSAIO")
                .subModule(new ModCertificCalibr())
                );
    }
    
    @Override
    public void preDisplay() {
        try {
            desabilitarGuiaComponente();
        } catch (AdsException ex) {
            throw new ApplicationRuntimeException(ex);
        }
    }
    
    /**
     * Desabilitar guia se instrução é do tipo componente.
     */
    private void desabilitarGuiaComponente() throws AdsException {
        // <user-code id="20626104" parentId="20626070" hashcode="64d3ce08" length="744">
        // import solutions.ferpa.ztest.ent.EntInstrumentoEnsaio;
        
        Long id = Long.parseLong(getContextValue());
        EntInstrumentoEnsaio instrucao = new EntInstrumentoEnsaio(ctx);
        instrucao.findById(id);
        if (instrucao.findTipoInstrumentoEnsaio().valueOfEComponente().equals("S")) {
            getGuideByName("COMP_INSTR").setVisible(false);
            getGuideByName("BANC_MODLH").setVisible(false);
            getGuideByName("OPER_INSTR").setVisible(false);
        }
        
        // Se OFERECE_DADOS_LEITURA = N (Não disponibiliza - Indica que o dispositivo não tem dados (ou não disponibiliza) dados para leitura)
        if (instrucao.findTipoInstrumentoEnsaio().valueOfOfereceDadosLeitura().equals("N")) {
            getGuideByName("MOD_CERTIF_CALIBR").setVisible(false);
        }
        instrucao.close();
        // </user-code>
    }
}
